﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;

namespace DEMI_webapp
{
    public partial class Koszyk : System.Web.UI.Page
    {
        S_Koszyk koszyk;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["koszyk"] == null)
            {
                koszyk = new S_Koszyk();
                Session["koszyk"] = koszyk;
            }
            else
                koszyk = (S_Koszyk)Session["koszyk"];
            SprawdzKoszyk();
        }

        protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "usun")
            {
                int index = Convert.ToInt32(e.CommandArgument);
                koszyk.UsunZKoszyka(index);

                SprawdzKoszyk();
            }
            else if (e.CommandName == "ZmienIlosc")
            {
                GridView1.Visible = false;
                Button3.Visible = false;
                Button4.Visible = false;
                Label1.Visible = false;
                Label2.Visible = false;
                Label3.Visible = false;
                Label4.Visible = false;
                Label5.Visible = false;
                TextBox1.Visible = false;
                TextBox2.Visible = false;
                TextBox3.Visible = false;
                Label6.Visible = true;
                Button5.Visible = true;
                Label7.Visible = false;
                DropDownList1.Visible = false;
                int index = Convert.ToInt32(e.CommandArgument);
                S_Kapelusz tmp = koszyk.ZwrocKapelusz(index);
                Session["indeksEdycji"] = index;
                Label6.Text = "Proszę podać nową ilość (Stara ilość: " + tmp.PodajIlosc().ToString() + " | Nazwa: " + tmp.PodajNazwe() + " | Materiał: " + tmp.PodajMaterial() + " | Kolor: " + tmp.PodajKolor() + " | Cena/szt: " + tmp.PodajCene().ToString() + " zł)";
                TextBox4.Visible = true;
            }
        }

        private void SprawdzKoszyk()
        {
            if (koszyk.PodajIloscKapeluszy() == 0)
            {
                Label1.Text = "Koszyk jest pusty";
                GridView1.Visible = false;
                Button3.Visible = false;
                Button4.Visible = false;
                Label2.Visible = false;
                Label3.Visible = false;
                Label4.Visible = false;
                Label5.Visible = false;
                TextBox1.Visible = false;
                TextBox2.Visible = false;
                TextBox3.Visible = false;
                Label7.Visible = false;
                DropDownList1.Visible = false;
            }
            else
            {
                GridView1.Visible = true;
                Button3.Visible = true;
                Button4.Visible = true;
                Label2.Visible = true;
                Label3.Visible = true;
                Label4.Visible = true;
                Label5.Visible = true;
                TextBox1.Visible = true;
                TextBox2.Visible = true;
                TextBox3.Visible = true;
                Label7.Visible = true;
                DropDownList1.Visible = true;
                Label1.Text = "Ilość produktów: " + koszyk.PodajIloscKapeluszy().ToString() + ". Do zapłaty: " + koszyk.PodajLacznaCene().ToString() + " zł";

                GridView1.DataSource = koszyk.ZwrocListeZakupow();
                GridView1.DataBind();

                GridView1.HeaderRow.Cells[2].Text = "Nazwa";
                GridView1.HeaderRow.Cells[3].Text = "Kolor";
                GridView1.HeaderRow.Cells[4].Text = "Materiał";
                GridView1.HeaderRow.Cells[5].Text = "Cena (zł/szt)";
                GridView1.HeaderRow.Cells[6].Text = "Ilość";
            }
        }

        protected void Button3_Click(object sender, ImageClickEventArgs e)
        {
            koszyk.OproznijKoszyk();

            SprawdzKoszyk();
        }

        protected void Button4_Click(object sender, ImageClickEventArgs e)
        {
            string c = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["conString"].ConnectionString;
            System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(c);
            System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
            cmd.CommandType = System.Data.CommandType.Text;

            cmd.Connection = con;
            //dodanie klienta do bazy
            cmd.CommandText = "INSERT INTO Klienci (imie, nazwisko, adres) VALUES ('" + TextBox1.Text + "', '" + TextBox2.Text + "', N'" + TextBox3.Text + "')";
            con.Open();
            cmd.ExecuteNonQuery();
            con.Close();
            //odczytanie id klienta jakie zostało mu przypisane
            cmd.CommandText = "SELECT id FROM Klienci WHERE (imie = '" + TextBox1.Text + "') AND (nazwisko = '" + TextBox2.Text + "') AND (adres LIKE N'" + TextBox3.Text + "')";
            con.Open();
            SqlDataReader reader = cmd.ExecuteReader();
            reader.Read();
            int ColumnID = reader.GetOrdinal("id");
            int id_klienta = reader.GetInt32(ColumnID);
            con.Close();
            //dodanie zamówienia do bazy dla klienta o odczytanym id
            cmd.CommandText = "INSERT INTO Zamowienia (adres, odbior, data_zlozenia, cena, id_klienta) VALUES ('" + TextBox3.Text + "', '" + DropDownList1.SelectedValue + "', CONVERT(DATETIME, '" + DateTime.Now.ToShortDateString() + "', 102), " + koszyk.PodajLacznaCene().ToString() + ", " + id_klienta.ToString() + ")";
            con.Open();
            cmd.ExecuteNonQuery();
            con.Close();
            //odczytanie id zamówienia
            cmd.CommandText = "SELECT id FROM Zamowienia WHERE (adres LIKE '" + TextBox3.Text + "') AND (odbior = '" + DropDownList1.SelectedValue + "') AND (id_klienta = " + id_klienta.ToString() + ") AND (data_zlozenia = CONVERT(DATETIME, '" + DateTime.Now.ToShortDateString() + "', 102)) AND (cena = " + koszyk.PodajLacznaCene().ToString() + ")";
            con.Open();
            reader = cmd.ExecuteReader();
            reader.Read();
            ColumnID = reader.GetOrdinal("id");
            int id_zamowienia = reader.GetInt32(ColumnID);
            con.Close();
            //dodawanie wybranych kapeluszy
            for (int i = 0; i < GridView1.Rows.Count; i++)
            {
                S_Kapelusz tmp = koszyk.ZwrocKapelusz(i);
                //odczytanie id kapelusza
                cmd.CommandText = "SELECT id FROM Kapelusze WHERE (nazwa = '" + tmp.PodajNazwe() + "') AND (kolor = '" + tmp.PodajKolor() + "') AND (cena = " + tmp.PodajCene().ToString() + ")";
                con.Open();
                SqlDataReader rdr = cmd.ExecuteReader();
                rdr.Read();
                int ColID = rdr.GetOrdinal("id");
                int id_kapelusza = rdr.GetInt32(ColID);
                con.Close();
                //dodanie zamowienia kapelusza
                cmd.CommandText = "INSERT INTO Zamowione_kapelusze (id_zamowienia, id_kapelusza, ilosc_kapeluszy) VALUES (" + id_zamowienia.ToString() + ", " + id_kapelusza.ToString() + ", " + tmp.PodajIlosc().ToString() + ")";
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();
                //sprawdzenie aktualnej ilości danego kapelusza
                cmd.CommandText = "SELECT ilosc FROM Kapelusze WHERE (nazwa = '" + tmp.PodajNazwe() + "') AND (kolor = '" + tmp.PodajKolor() + "') AND (cena = " + tmp.PodajCene().ToString() + ") AND (material = '" + tmp.PodajMaterial() + "')";
                con.Open();
                rdr = cmd.ExecuteReader();
                rdr.Read();
                ColID = rdr.GetOrdinal("ilosc");
                int ile = rdr.GetInt32(ColumnID);
                con.Close();
                //edycja ilości kapeluszy na magazynie
                cmd.CommandText = "UPDATE Kapelusze SET ilosc = " + (ile - tmp.PodajIlosc()).ToString() + " WHERE (nazwa = '" + tmp.PodajNazwe() + "') AND (kolor = '" + tmp.PodajKolor() + "') AND (cena = " + tmp.PodajCene().ToString() + ") AND (material = '" + tmp.PodajMaterial() + "')";
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();
            }
            PokazPotwierdzenie();
        }

        private void PokazPotwierdzenie()
        {
            koszyk.OproznijKoszyk();
            Label1.Text = "Zamówienie zostało przyjęte do realizacji";
            GridView1.Visible = false;
            Button3.Visible = false;
            Button4.Visible = false;
            Label2.Visible = false;
            Label3.Visible = false;
            Label4.Visible = false;
            Label5.Visible = false;
            TextBox1.Visible = false;
            TextBox2.Visible = false;
            TextBox3.Visible = false;
            Label7.Visible = false;
            DropDownList1.Visible = false;
        }

        protected void TextBox1_TextChanged(object sender, EventArgs e)
        {

        }

        protected void Button5_Click(object sender, ImageClickEventArgs e)
        {
            if (TextBox4.Text != "")
            {
                if (Convert.ToInt32(TextBox4.Text) > 0)
                {
                    int index = (int)Session["indeksEdycji"];
                    koszyk.ZmienIlosc(index, Convert.ToInt32(TextBox4.Text));
                    Session.Remove("indeksEdycji");
                }
            }
            TextBox4.Text = "";
            GridView1.Visible = true;
            Button3.Visible = true;
            Button4.Visible = true;
            Label1.Visible = true;
            Label2.Visible = true;
            Label3.Visible = true;
            Label4.Visible = true;
            Label5.Visible = true;
            TextBox1.Visible = true;
            TextBox2.Visible = true;
            TextBox3.Visible = true;
            Label6.Visible = false;
            Button5.Visible = false;
            TextBox4.Visible = false;
            Label7.Visible = true;
            DropDownList1.Visible = true;
            SprawdzKoszyk();
        }
    }
}